from z3 import *
from math import isqrt
from Crypto.Util.number import *

n = 116511357060712144099976831158416173670467763509289584801493671983604041910332385046875404384756630045618050783932185923516987202481448148103872447145541170729746402328353998383492261143217680863970590230010586491615247835524208887971058047964672314644549792925412373691164840635424723609445014754830472392209
e = 36526
c = 68566562752091338059697971943044848432167577056994212169182746579664413762856878641964389495160899828612738440047547382833551104203712893527042407485845990546365951293911064224353754617767168257803980890401905329505235528035798742136124001870783107781705890831136037290806374721309719666807958790646103085768
h = 118281503660900552145988262483339393233985528449636132779876616077036147786271012801732196061115583504320630043125553844303439507836838360542594809019689063414521859114811409777400410154808000209258308294888519030043778123024058803886403741431766179429783054411509193156279355605455472548615352680641931274832
p = Int('p')
q = Int('q')
s = Solver()
s.add(p*q==n)
s.add(p**2+q==h)
if s.check() == sat:
    p = s.model()[p].as_long()
    q = s.model()[q].as_long()
# print(p, q)
# p = 10875730028871650515065014441296606276263483087773849451147307607447447416011541301551891346245451645857485498452834754451215820107294511193623920048942559
# q = 10712968853714743872526082284449246817083435005715609873200136574062381693683264866111272068450623053780663098018090504894839697187442017093462707849806351
d = inverse(e, (p-1)*(q-1))
m = isqrt(pow(c, d, n))
flag = long_to_bytes(m).decode()
print(flag) # DASCTF{194d3623abfa2b8ff96119ceaf2ed934}